10 REM *** LFS FORM MAKER2A *** 20 REM 30 REM 7/9/87 VERSION 32 REM FOR STAR SG-10C AND SL-10C 34 REM 36 REM THANKS TO UNCLE DUD FOR FIXES IN 38 REM LINES 1050,1060,1090,1120,1165 40 REM 50 REM COPYRIGHT, 1987 60 REM LOUIS F. SANDER 70 REM 153 MAYER DRIVE 80 REM PITTSBURGH, PA 15237 90 REM 120 REM *** MAIN LOOP 130 GOSUB190:REM INITIALIZE 140 GOSUB270:REM MAIN MENU 150 ON A GOSUB390,640,930,1250,1470:REM MENU SELECTIONS 160 RUN 170 : 180 REM *** INITIALIZE 190 DIM CW%(255),LL$(255),RL$(255) 200 PW=80:PI=11:K1=631:K2=198:IFPEEK(65534)<>72THENK1=842:K2=208:REM 64OR128? 210 EM$=" [158] ERROR! MUST BE AT LEAST 1 ":Q$=CHR$(34) 220 R$=CHR$(13):TL$="[147][158][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]" 230 POKE53280,6:POKE53281,6 240 RETURN 250 : 260 REM *** MAIN MENU 270 PRINTTL$;" LFS FORM MAKER - LOUIS F. SANDER - 5/87" 275 PRINT"[145] FOR STAR SG-10C AND SL-10C PRINTERS [146][160]" 280 PRINT"[153]THIS LETS YOU DESIGN FORMS. SELECT:" 290 PRINT" 1 - CREATE A NEW FORM 300 [153]" 2 - EDIT AN EXISTING FORM 310 PRINT" 3 - PRINT AN EXISTING FORM 320 [153]" 4 - INSTRUCTIONS 330 PRINT" 5 - QUIT 340 [161]A$:[139]A$[178]""[167]340 350 A[178][197](A$):[139]A[179]1[176]A[177]5[167]340 360 [142] 370 : 380 [143] *** CREATE 390 [153]TL$;" CREATE A NEW FORM WAITCLOSE" 400 [153]"PRINTTHIS LETS YOU CREATE A NEW FORM AND 410 PRINT"SAVE IT ONTO YOUR DISK. 420 [153]"PRESS TO RETURN TO THE MENU, 430 PRINT"OR PRESS ANY OTHER KEY TO CONTINUE... 440 [161]A$:[139]A$[178]""[167]440 450 [139]A$[178]R$[167]610 460 [141]1660 470 [133]" PRINT A COPY NOW (Y OR N) YCMDCMDCMD";A$ 480 [139][200](A$,1)[178]"Y"[167][141]960 490 [153]"PRINTTO SAVE THE FORM AS A FILE ON THE DISK, 500 PRINT"YOU MUST GIVE IT A UNIQUE FILE NAME OF" 510 PRINT"14 CHARACTERS OR FEWER. 520 [153]"SAVED FORMS CAN EASILY BE PRINTED OR 530 PRINT"EDITED USING OPTIONS FROM THE MAIN MENU. 540 [153]"ENTER THE FORM NAME NOW, OR PRESS 550 PRINT" TO RETURN TO THE MENU. 560 [153][163]15);"LISTTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(ONON" 570 F$[178]"":[133]" FORM NAME";F$:F$[178]"F/"[170]F$:[139]F$[178]"F/"[167][138] 580 [159]15,8,15:[159]2,8,2,F$[170]",S,W" 590 [132]15,A,A$:[139]A[177]19[167][160]2:[160]15:[153]"SYS ";A$;" ":[137]560 600 [141]2500 610 [142] 620 : 630 [143] *** EDIT 640 [153]TL$;" EDIT AN EXISTING FORM WAITCLOSE" 650 [153]"PRINTTHIS LETS YOU LOAD AND MODIFY AN 660 PRINT"EXISTING FORM. YOU CAN THEN SAVE IT 670 [153]"UNDER THE SAME NAME OR A NEW ONE. 680 GOSUB1510 690 OF$=F$ 700 GOSUB1660 710 INPUT" PRINT A COPY NOW (Y OR N) Y[157][157][157]";A$ 720 IFLEFT$(A$,1)="Y"THENGOSUB960 730 PRINT"[153]TO SAVE THE FORM AS A FILE ON THE DISK, 740 [153]"YOU MUST GIVE IT A UNIQUE FILE NAME OF" 750 [153]"14 CHARACTERS OR FEWER. 760 PRINT"SAVED FORMS CAN EASILY BE PRINTED OR 770 [153]"EDITED USING OPTIONS FROM THE MAIN MENU. 780 PRINT"[153]ENTER THE NEW NAME UNDER WHICH YOU WANT 790 [153]"TO SAVE THE EDITED FORM, OR PRESS 800 PRINT" TO RETURN TO THE MAIN MENU." 810 PRINT"'@[153]' WILL SAVE IT UNDER ITS ORIGINAL 820 [153]"NAME, WHICH IS ";[202](OF$,3);"PRINT" 830 [153][163]15);"LISTTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(ONON" 840 F$[178]"":[133]" FORM NAME";F$:F$[178]"F/"[170]F$ 850 [139]F$[178]"F/"[167]900 860 [159]15,8,15:[139]F$[178]"F/@"[167]F$[178]OF$:[152]15,"S0:"[170]F$ 870 [159]2,8,2,F$[170]",S,W" 880 [132]15,A,A$:[139]A[177]19[167][160]2:[160]15:[153]"SYS ";A$;" ":[137]830 890 [141]2500 900 [142] 910 : 920 [143] *** PRINT 930 [153]TL$;" PRINT AN EXISTING FORM WAITCLOSE" 940 [153]"PRINTTHIS LETS YOU LOAD AND PRINT A FORM THATHAS BEEN SAVED ON THE DISK. 950 GOSUB1510 960 PRINT"[153]THE FORM IS" LEFT$(STR$((LW+W)/10),5);Q$;" WIDE BY"; 970 PRINTLEFT$(STR$(TL%/9),5);Q$;" LONG," 980 PRINT"OR";LW+W;"SPACES WIDE BY";TL%;"LINES LONG." 990 PRINT"[153]";:OPEN15,4,15:CLOSE15:IFSTTHENPRINT"PUT THE PRINTER ONLINE, 1000 [153]"ALIGN THE PAPER IN THE PRINTER, 1010 PRINT"THEN PRESS THE 'P[153]' KEY... " 1020 GETA$:IFA$<>"P"THEN1020 1030 OPEN15,4,15:CLOSE15:IFSTTHENPRINT"[158] PRINTER IS OFFLINE! ":GOTO990 1040 TX$=CHR$(15) :REM TEXT MODE 1050 OPEN6,4,6:PRINT#6,CHR$(20): REM GRAPHICS MODE FOR STAR PRINTERS 1060 OPEN4,4:GOSUB1200:PRINT#4,LW$;CL$:PRINT 1070 FORH=1TONR%:GOSUB1220;:FORJ=1TONC%:PRINT#4,CHR$(207);:FORK=1TOCW%(J)-1 1080 IFCW%(J)>1THENPRINT#4,CHR$(163); 1090 NEXT:NEXT:PRINT#4,CHR$(165):IFLR%<2THEN1130 1100 FORI=1TOLR%-1:GOSUB1220;:FORJ=1TONC%:PRINT#4,CHR$(165);:FORK=1TOCW%(J)-1 1110 IFCW%(J)>1THENPRINT#4," "; 1120 NEXT:NEXT:PRINT#4,CHR$(165):NEXT 1130 NEXT:GOSUB1220;:FORJ=1TONC%:FORK=1TOCW%(J):PRINT#4,CHR$(163);:NEXT:NEXT 1140 PRINT#4:CLOSE4 1150 INPUT"PRINT ANOTHER COPY (Y OR N) N[157][157][157]";A$ 1160 IFLEFT$(A$,1)="Y"THENLC=0:PRINT:GOTO990 1165 PRINT#6,CHR$(40):CLOSE6 1170 RETURN 1180 : 1190 REM PUTS ROW LABELS IN PLACE 1200 FORJ=1TOTL%:LL$(J)=LW$:NEXT 1210 LN=1:FORK=1+INT((LR%-1)/2)TOTL%-1STEPLR%:LL$(K)=RL$(LN):LN=LN+1:NEXT 1220 PRINT#4,TX$;LL$(LC);:LC=LC+1:RETURN:REM ROW LABELS 1230 : 1240 REM *** INSTRUCTIONS 1250 PRINT"[147]THIS LETS YOU MAKE FORMS ON THE PRINTER:[160][160]" 1260 PRINT" COLUMN 1 COLUMN 2" 1270 PRINT" [207][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][183][183][183][183][183][183][183][183][183][165]" 1280 PRINT" ROW 1 [165] [165] [165]" 1290 PRINT" [207][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][183][183][183][183][183][183][183][183][183][165]" 1300 PRINT" ROW 2 [204][175][175][175][175][175][175][175][175][175][175][204][175][175][175][175][175][175][175][175][175][175][175][175][175][165]" 1310 PRINT" [165] [165] [165]" 1320 PRINT" ROW 3 [204][175][175][175][175][175][175][175][175][175][175][204][175][175][175][175][175][175][175][175][175][175][175][175][175][165]" 1330 PRINT:PRINT"THE FORM CAN BE AS WIDE AS YOUR PRINTER," 1340 PRINT"[145]LESS ONE SPACE. THERE ARE 10 PRINTED" 1350 PRINT"SPACES PER INCH OF FORM WIDTH, AND NINE" 1360 PRINT"PRINTER LINES PER INCH OF FORM HEIGHT. 1370 [153]:[153]"YOU CHOOSE AN INDIVIDUAL WIDTH FOR EACH" 1380 [153]"COLUMN, AND ONE HEIGHT FOR ALL THE ROWS." 1390 [153]"YOU CAN LABEL THE COLUMNS AND ROWS. 1400 PRINT:PRINT"FORMS MAY BE SAVED TO DISK. SAVED FORMS 1410 [153]"CAN BE REPRINTED AND/OR EDITED. 1420 PRINT"[153] PRESS ANY KEY TO CONTINUE..." 1430 GETA$:IFA$=""THEN1430 1440 RETURN 1450 : 1460 REM *** QUIT 1470 POKE53280,14:PRINT"[154]" 1480 END 1490 : 1500 REM ** FORM LOADER 1510 PRINT"[153]ENTER THE NAME OF AN EXISTING FORM, OR 1520 [153]"PRESS TO RETURN TO THE MENU. 1530 PRINTTAB(23);"[155][163][163][163][163][163][163][163][163][163][163][163][163][163][163][145][145]" 1540 F$="":INPUT" EXISTING FORM NAME";F$:F$="F/"+F$:IFF$="F/"THENRUN 1550 OPEN15,8,15:OPEN2,8,2,F$+",S,R" 1560 INPUT#15,A,A$:IFA<20THEN1580 1570 PRINT"[158] ";A$;" ":CLOSE2:CLOSE15:PRINT"[145][145]":GOTO1530 1580 INPUT#2,LR%,LW,NC%,NR%,PI,PW,TL%:INPUT#2,CL$ 1590 FORJ=1TONC%:INPUT#2,CW%(J):NEXT 1600 FORJ=1TONR%:INPUT#2,RL$(J):NEXT 1610 CLOSE2:CLOSE15 1620 LW$="":FORJ=1TOLW:LW$=LW$+" ":NEXT 1630 RETURN 1640 : 1650 REM ** FORM EDITOR 1660 PRINT" YOUR PRINTER WIDTH IN SPACES ";PW;:A=PW:GOSUB2410 1670 INPUTPW:PW=PW-1:IFPW<1THENPW=80:GOTO1660 1680 PRINT" YOUR PAPER LENGTH IN INCHES ";PI;:A=PI:GOSUB2410 1690 INPUTPI:PL=INT(9*PI):IFPI<1THENPI=11:GOTO1680 1700 PRINT"[153]THE VERTICAL COLUMNS CAN OCCUPY AS MANY 1710 [153]"AS";PW;"PRINT SPACES ACROSS THE PAGE. 1720 PRINT"THERE ARE 10 PRINT SPACES PER INCH. 1730 [153]" HOW MANY COLUMNS ON THE FORM ";NC%;:A[178]NC%:[141]2410 1740 [133]NC%:[139]NC%[179]1[167][153]EM$:[137]1730 1750 [153]:W[178]0:[129]J[178]1[164]NC% 1760 [153]" HOW MANY SPACES IN COLUMN";J;CW%(J);:A[178]CW%(J):[141]2410 1770 [133]A:[139]A[179]1[167][153]EM$:[137]1760 1780 CW%(J)[178]A:W[178]W[170]CW%(J):[130] 1790 [153]"PRINTTHESE COLUMNS TAKE UP";W;"OF THE";PW 1800 [153]"PRINTAVAILABLE SPACES ON YOUR PRINTER. THERE" 1810 [153]"ARE";PW[171]W;"SPACES AVAILABLE FOR LABELING 1820 PRINT"THE HORIZONTAL ROWS. 1830 [139]W[177]PW[167][153]"SYS TOO WIDE! - TRY AGAIN PRINT":[137]1730 1840 [133]" IS THIS O.K. (Y OR N) YCMDCMDCMD";A$ 1850 [139][200](A$,1)[179][177]"Y"[167][153]:[137]1730 1860 [153]"PRINTNOW WE WILL SET UP THE HORIZONTAL ROWS," 1870 [153]"WHICH CAN FILL UP TO";PL[171]1;"PRINTER LINES." 1880 [153]"THERE ARE 9 PRINTER LINES PER INCH. 1890 PRINT" HOW MANY ROWS ON THE FORM ";NR%;:A=NR%:GOSUB2410 1900 INPUTNR%:IFNR%<1THENPRINTEM$:GOTO1890 1910 PRINT:NW=LEN(STR$(NR%))-1:NW$=LEFT$(" ",NW) 1920 PRINT"HOW MANY PRINTER LINES PER ROW ";LR%;:A=LR%:GOSUB2410 1930 INPUTLR%:IFLR%<1THENPRINTEM$:GOTO1920 1940 TL%=NR%*LR%+1 1950 PRINT"[153]THESE ROWS TAKE UP";TL%;"PRINTER LINES," 1960 PRINT"INCLUDING A LINE FOR COLUMN LABELS." 1970 PRINT"YOUR PAPER HAS";PL;"LINES."; 1980 IFTL%>PLTHENPRINT:PRINT"[158] ERROR! - TOO LONG FOR THE PAPER [153]":GOTO1890 1990 PRINT"[157], LEAVING";PL-TL% 2000 PRINT"LINES UNPRINTED." 2010 INPUT" IS THIS O.K. (Y OR N) Y[157][157][157]";A$ 2020 IFLEFT$(A$,1)<>"Y"THENPRINT:GOTO1890 2030 PRINT"[153]NOW WE WILL DO THE OPTIONAL LABELS. 2040 [153]"YOUR FORM HAS";NC%;"VERTICAL COLUMNS, 2050 PRINT"WHICH YOU CAN LABEL IF YOU WISH. 2060 [133]" LABEL THE COLUMNS (Y OR N) YCMDCMDCMD";A$ 2070 [139][200](A$,1)[179][177]"Y"[167]CL$[178]" ":[137]2200 2080 [141]2430:LS[178]0:[129]J[178]1[164]NC% 2090 [153]"LABEL FOR COLUMN";J;"-";CW%(J);"SPACES"; 2100 [139]CW%(J)[179]2[167][153]"CMD "; 2110 [153]:[153]" ";Q$;[199](20);Q$; 2120 [139]CL$[178]""[167][129]K[178]1[164]CW%(J):[153]" ";:[130]:[137]2150 2130 [139][195](CL$)[179]W[167]CL$[178]CL$[170]" ":[137]2130 2140 [153][202](CL$,LS[170]1,CW%(J));:LS[178]LS[170]CW%(J) 2150 A[178][185](0):[153]Q$:[139]A[177]38[167][153]"ON"; 2160 [153]"ON";:[151]K1,29:[151]K2,1:[133]A$ 2170 [139][195](A$)[179][177]CW%(J)[167][153]"SYS WRONG WIDTH! - TRY AGAIN ":[137] 2090 2180 L$[178]L$[170]A$:[130]:CL$[178]L$ 2190 : 2200 [133]" LABEL THE ROWS (Y OR N) YCMDCMDCMD";A$ 2210 [139][200](A$,1)[179][177]"Y"[167]2390:[143] THIS DEST OK?? 2220 [153]"PRINTTHE FORM IS";W;"SPACES WIDE, LEAVING" 2230 [153]"CMD";PW[171]W;"SPACES FOR LABELING ITS";NR%:[153]"HORIZONTAL ROWS. 2240 PRINT" HOW MANY TO ALLOW FOR LABELS ";LW;:A=LW:GOSUB2410 2250 INPUTLW:IFLW<1THENPRINTEM$:GOTO2240:REM MAYBE NOT NEEDED 2260 IFLW>PW-WTHENPRINT" [158] ERROR! -";PW-W;"[157] MAXIMUM ":GOTO2240 2270 LW$="":FORJ=1TOLW:LW$=LW$+" ":NEXT 2280 GOSUB2430 2290 FORJ=1TONR% 2300 RL$=RL$(J)+LW$:PRINT"LABEL FOR ROW";J;"-";LW;"SPACES"; 2310 IFLW<2THENPRINT"[157] "; 2320 PRINT:PRINT" ";Q$;MID$(RL$,1,LW); 2330 A=POS(0):PRINTQ$:IFA>38THENPRINT"[145]"; 2340 PRINT"[145]";:POKEK1,29:POKEK2,1:INPUTRL$ 2350 IFLEN(RL$)<>LWTHENPRINT"[158] WRONG LENGTH!! - TRY AGAIN ":GOTO2300 2360 RL$(J)=RL$ 2370 NEXT 2380 PRINT"[153]YOUR FORM IS FINISHED!" 2390 RETURN 2400 : 2410 PRINTLEFT$("[157][157][157][157][157][157][157][157]",2+LEN(STR$(A)));:RETURN:REM ALIGN INPUT 2420 : 2430 PRINT"[153]ENTER THE LABELS RIGHT NOW. YOU MUST" 2440 PRINT"KEEP THEM BETWEEN THE QUOTATION MARKS," 2450 PRINT"BUT YOU CAN CENTER THEM OR POSITION" 2460 PRINT"THEM AS YOU LIKE." 2470 RETURN 2480 : 2490 REM ** FORM SAVER 2500 PRINT#2,LR%;R$;LW;R$;NC%;R$;NR%;R$;PI;R$;PW+1;R$;TL% 2510 PRINT#2,Q$+CL$+Q$ 2520 FORJ=1TONC%:PRINT#2,CW%(J):NEXT 2530 FORJ=1TONR%:PRINT#2,Q$+RL$(J)+Q$:NEXT 2540 CLOSE2:CLOSE15 2550 RETURN